package com.mes.schedule.algorithm.iface;

import java.util.Collection;

import com.mes.schedule.domain.SOperationTask;
import com.mes.schedule.domain.SPartTask;
import com.mes.schedule.domain.ScheduleScheme;

/*import com.mes.schedule.persistence.domain.SOperationTask;
import com.mes.schedule.persistence.domain.SPartTask;
import com.mes.schedule.persistence.domain.ScheduleScheme;*/

public interface ITaskSFCalc {
	public static double SLACK_MAX = 999;
	/**
	 * 计算所有任务
	 */
	public void calcSF(ScheduleScheme schedule);
	/**
	 * 只计算调度任务
	 */
	public void calcScheduleSF(ScheduleScheme schedule);	
	
	public void calcSF(SPartTask partTask);
	
	public void calcPartTaskSF(Collection<SPartTask> partTaskList);
	
	public void calcOperationTaskSF(Collection<? extends SOperationTask> operationTaskList);
	public void calcSF(Collection<? extends SOperationTask> operationTaskList,Collection<SPartTask> partTaskList);
	
	public void calcSFForTimeSpot(SPartTask partTask);
	
	public void calcSFForTimeSpot(SOperationTask timeSpotTask);
	public void calcTaskScope(Collection<? extends SOperationTask> operationTasks);
	public void calcTaskEarlyStart(Collection<? extends SOperationTask> operationTasks);
	public double calcSlactor(double remainTime, double remainWork);	
}
